home *** CD-ROM | disk | FTP | other *** search
/ Aminet 35 / Aminet 35 (2000)(Schatztruhe)[!][Feb 2000].iso / Aminet / dev / e / cha_source.lha / cha_source / args.e < prev    next >
Encoding:
Text File  |  1999-12-18  |  2.9 KB  |  110 lines

  1. /*==========================================================================+
  2. | args.e                                                                    |
  3. | functions and macros to make reading arguments easier                     |
  4. | NB: the arg array from ReadArgs() must be called args                     |
  5. +--------------------------------------------------------------------------*/
  6.  
  7. OPT MODULE,
  8.     PREPROCESS
  9. OPT EXPORT
  10.  
  11. MODULE '*oss'
  12.  
  13. /*-------------------------------------------------------------------------*/
  14.  
  15. -> get integer, float, boolean, string, oss instrument number
  16. -> throws ("IARG", id), ("FARG", id), ("SARG", id) if bad format
  17. -> throws ("ARG", id) if argument not given
  18.  
  19. #define iarg(id) _iarg(args[id], id, 'id' + 4)
  20. #define farg(id) _farg(args[id], id, 'id' + 4)
  21. #define barg(id) _barg(args[id], id, 'id' + 4)
  22. #define sarg(id) _sarg(args[id], id, 'id' + 4)
  23. #define ossinumarg(id) _ossinumarg(args[id], id, 'id' + 4)
  24.  
  25. /*-------------------------------------------------------------------------*/
  26.  
  27. -> get with default value integer, float, boolean, string
  28. -> default for boolean is xor'ed with value (to allow switches to turn
  29. -> off features if specified)
  30. -> throws ("IARG", id), ("FARG", id) if bad format
  31.  
  32. #define iargd(id, def) _iargd(args[id], id, 'id' + 4, def)
  33. #define fargd(id, def) _fargd(args[id], id, 'id' + 4, def)
  34. #define bargd(id, def) _bargd(args[id], id, 'id' + 4, def)
  35. #define sargd(id, def) _sargd(args[id], id, 'id' + 4, def)
  36.  
  37. /*-------------------------------------------------------------------------*/
  38.  
  39. -> helper functions (private)
  40.  
  41. PROC _iarg(a, id, sid)
  42.     DEF v, ok
  43.     IF a
  44.         v, ok := Val(a)
  45.         IF ok <> StrLen(a) THEN Throw("IARG", sid)
  46.     ELSE
  47.         Throw("ARG", sid)
  48.     ENDIF
  49. ENDPROC v
  50.  
  51. PROC _farg(a, id, sid)
  52.     DEF v, ok
  53.     IF a
  54.         v, ok := RealVal(a)
  55.         IF ok <> StrLen(a) THEN Throw("FARG", sid)
  56.     ELSE
  57.         Throw("ARG", sid)
  58.     ENDIF
  59. ENDPROC v
  60.  
  61. PROC _barg(a, id, sid) IS a
  62.  
  63. PROC _sarg(a, id, sid)
  64.     IF a
  65.         IF StrLen(a) = 0 THEN Throw("SARG", sid)
  66.     ELSE
  67.         Throw("ARG", sid)
  68.     ENDIF
  69. ENDPROC a
  70.  
  71. PROC _ossinumarg(a, id, sid)
  72.     DEF v
  73.     IF a
  74.         IF (StrLen(a) <> 1) AND (StrLen(a) <> 2) THEN Throw("OARG", sid)
  75.         v := oss_ed_inumtonumber(a)
  76.         IF v = 0 THEN Throw("rarg", sid)
  77.         RETURN v
  78.     ELSE
  79.         Throw("ARG", sid)
  80.     ENDIF
  81. ENDPROC
  82.  
  83. PROC _iargd(a, id, sid, def)
  84.     DEF v, ok = FALSE
  85.     IF a
  86.         v, ok := Val(a)
  87.         IF ok <> StrLen(a) THEN Throw("IARG", sid)
  88.     ENDIF
  89. ENDPROC IF ok THEN v ELSE def
  90.  
  91. PROC _fargd(a, id, sid, def)
  92.     DEF v, ok = FALSE
  93.     IF a
  94.         v, ok := RealVal(a)
  95.         IF ok <> StrLen(a) THEN Throw("FARG", sid)
  96.     ENDIF
  97. ENDPROC IF ok THEN v ELSE def
  98.  
  99. PROC _bargd(a, id, sid, def) IS Eor(a, def)
  100.  
  101. PROC _sargd(a, id, sid, def)
  102.     IF a
  103.         IF StrLen(a) <> 0 THEN RETURN a
  104.     ENDIF
  105. ENDPROC def
  106.  
  107. /*--------------------------------------------------------------------------+
  108. | END: args.e                                                               |
  109. +==========================================================================*/
  110.